using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ACME.Northwind.DataTransfer;
using ACME.Northwind.Service.Interfaces;

namespace ACME.Northwind.MockProxy.EventArgs
{
	#region Employee EventArgs

	/// <summary>
	/// An event arguments class for object selection by primary key
	/// </summary>
	public partial class EmployeePrimaryKeyEventArgs : System.EventArgs
	{
		/// <summary>
		/// The default constructor
		/// </summary>
		public EmployeePrimaryKeyEventArgs(int employeeid)
		{
			this.ReturnValue = new EmployeeDTO();
		}

		/// <summary>
		/// The returned DTO item
		/// </summary>
		public EmployeeDTO ReturnValue { get; set; }
	}

	/// <summary>
	/// An event arguments class for object persistence
	/// </summary>
	public partial class EmployeePersistEventArgs : System.EventArgs
	{
		/// <summary>
		/// The constructor for single DTO events
		/// </summary>
		public EmployeePersistEventArgs(EmployeeDTO dto)
		{
			this.DTOList = new List<EmployeeDTO>();
			this.DTOList.Add(dto);
		}

		/// <summary>
		/// The constructor for multi DTO events
		/// </summary>
		public EmployeePersistEventArgs(List<EmployeeDTO> list)
		{
			this.DTOList = list;
		}

		/// <summary>
		/// The list of DTO items to persist
		/// </summary>
		public List<EmployeeDTO> DTOList { get; set; }
		/// <summary>
		/// The return value for success
		/// </summary>
		public bool ReturnValue { get; set; }
	}

	/// <summary>
	/// An event arguments class for object deletion
	/// </summary>
	public partial class EmployeeDeleteEventArgs : EmployeePersistEventArgs
	{
		/// <summary>
		/// The constructor for single DTO events
		/// </summary>
		public EmployeeDeleteEventArgs(EmployeeDTO dto) : base(dto)
		{
		}

		/// <summary>
		/// The constructor for multi DTO events
		/// </summary>
		public EmployeeDeleteEventArgs(List<EmployeeDTO> list) : base (list)
		{
		}

	}

	/// <summary>
	/// An event arguments class for object selection
	/// </summary>
	public partial class EmployeeRunSelectEventArgs : System.EventArgs
	{
		/// <summary>
		/// The default constructor
		/// </summary>
		public EmployeeRunSelectEventArgs()
		{
			this.ReturnValue = new List<EmployeeDTO>();
		}

		/// <summary>
		/// The returned list of DTO items
		/// </summary>
		public List<EmployeeDTO> ReturnValue { get; set; }
	}

	/// <summary>
	/// An event arguments class for object selection with LINQ
	/// </summary>
	public partial class EmployeeRunSelectLINQEventArgs : EmployeeRunSelectEventArgs
	{
		/// <summary>
		/// The default constructor
		/// </summary>
		public EmployeeRunSelectLINQEventArgs(string linq)
			: base()
		{
			this.LINQ = linq;
		}
		
		/// <summary>
		/// The LINQ statement to use for filtering
		/// </summary>
		public string LINQ { get; set; }
	}

	/// <summary>
	/// An event arguments class for paginated object selection
	/// </summary>
	public partial class EmployeeRunSelectPagedEventArgs : System.EventArgs
	{
		/// <summary>
		/// The default constructor
		/// </summary>
		public EmployeeRunSelectPagedEventArgs(int pageIndex, int pageSize, bool ascending, string sortColumn, string linq)			
		{
			this.ReturnValue = new PagedQueryResults<EmployeeDTO>();
			this.PageIndex = pageIndex;
			this.PageSize = pageSize;
			this.Ascending = ascending;
			this.SortColumn = sortColumn;
			this.LINQ = linq;
		}

		/// <summary>
		/// The returned list of DTO items
		/// </summary>
		public PagedQueryResults<EmployeeDTO> ReturnValue { get; set; }
		/// <summary>
		/// The LINQ statement to use for filtering
		/// </summary>
		public string LINQ { get; set; }
		/// <summary>
		/// The page index to load
		/// </summary>
		public int PageIndex { get; set; }
		/// <summary>
		/// The number of records per page
		/// </summary>
		public int PageSize { get; set; }
		/// <summary>
		/// Determines if the sort direction
		/// </summary>
		public bool Ascending { get; set; }
		/// <summary>
		/// Determines the column on which to sort
		/// </summary>
		public string SortColumn { get; set; }
	}

	/// <summary>
	/// An event arguments class for DTO specific events
	/// </summary>
	public partial class EmployeeDTOEventArgs : System.EventArgs
	{
		/// <summary>
		/// The default constructor
		/// </summary>
		public EmployeeDTOEventArgs(EmployeeDTO item)
		{
			this.DTO = item;
		}

		/// <summary>
		/// The passed in DTO item
		/// </summary>
		public EmployeeDTO DTO { get; set; }
		/// <summary>
		/// The returned DTO item
		/// </summary>
		public IDTO ReturnDTOItem { get; set; }
		/// <summary>
		/// The returned DTO list
		/// </summary>
		public List<IDTO> ReturnDTOList { get; set; }
	}

	#endregion

}
